home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #5 / Amiga Plus CD - 2000 - No. 5.iso / Tools / Dev / GameboyDev / GBDK / lib / memcpy.s < prev    next >
Encoding:
Text File  |  1999-03-29  |  542 b   |  47 lines

  1.     .include    "global.s"
  2.  
  3.     .area    _CODE
  4.  
  5.     ;; Copy memory zone
  6.     ;; 
  7.     ;; Entry conditions
  8.     ;;   BC = source
  9.     ;;   DE = length
  10.     ;;   HL = destination
  11.     ;; 
  12.     ;; Register used: AF, BC, DE, HL
  13. .memcpy::
  14.     JR    2$
  15. 1$:
  16.     LD    A,(BC)
  17.     LD    (HL+),A
  18.     INC    BC
  19.     DEC    DE
  20. 2$:
  21.     LD    A,D
  22.     OR    E
  23.     JR    NZ,1$
  24.     RET
  25.  
  26. _memcpy::
  27.     PUSH    BC
  28.  
  29.     LDA    HL,9(SP)    ; Skip return address and registers
  30.     LD    D,(HL)        ; DE = n
  31.     DEC    HL
  32.     LD    E,(HL)
  33.     DEC    HL
  34.     LD    B,(HL)        ; BC = s2
  35.     DEC    HL
  36.     LD    C,(HL)
  37.     DEC    HL
  38.     LD    A,(HL-)        ; HL = s1
  39.     LD    L,(HL)
  40.     LD    H,A
  41.     PUSH    HL
  42.     CALL    .memcpy
  43.     POP    DE        ; Return s1
  44.  
  45.     POP    BC
  46.     RET
  47.